This invention relates generally to computer data storage systems, and more particularly to stacking operations for data storage systems.
A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever. The following notice applies to the software and data as described below and in the drawing hereto: Copyright(copyright) 1998, Microsoft Corporation, All Rights Reserved.
As computer systems have evolved so has the availability and configuration of data storage devices, such as magnetic or optical disks. For example, these storage devices can be connected to the computer system via a bus, or they can be connected to the computer system via a wired or wireless network. In addition, the storage devices can be separate or co-located in a single cabinet.
A storage volume is a software abstraction of the underlying storage devices and is commonly the smallest self-contained unit of storage exposed by an operating system and administered by a file system. Storage volumes abstract the physical topology of the storage devices and may be a fraction of a disk, a whole disk or even multiple disks that are bound into a contiguous range of logical blocks.
Volumes are constructed from one or more extents, with each extent being a contiguous storage address spaces presented by the underlying storage device. An extent is typically characterized by the size of the address space and a starting offset for the address space from a base of the media. Volume mapping is the process of mapping the contiguous address space presented by the volume onto the usually non-contiguous storage address spaces of the underlying extents. Volume mappings are either implemented on a specialized hardware controller, referred to as a hardware volume provider, or in software by a software volume provider.
Volume mappings may be used to increase the fault tolerance, performance, or capacity characteristics of the underlying storage devices. For example, a technique for improving fault tolerance, known as mirroring or plexing a disk, uses multiple disks. When data is written to one disk the data is also written to a second disk; thus the second disk is a xe2x80x9cmirror imagexe2x80x9d of the first disk. If one disk should fail the other disk is still available for use and has an exact copy of the information on the first disk.
In addition RAID numbers are often used to identify storage volume mappings. A RAID, or Redundant Array of Independent Disks, provides the ability to lose an extent without losing volume data. Access to the volume may be slower or more costly, but is not interrupted by the failure of the underlying extent. RAID1 implements mirroring. RAID3 and above all implement some sort of stripe with parity scheme; the different number indicates the arrangement of the data and check-data (or parity) extents. Striping is a mechanism where data for a file or file system is distributed among several different disks.
While the above-mentioned techniques can be used to provide increased performance, fault tolerance or storage capacity, several problems remain. First, it is useful to have combinations of volume mappings. Current systems do not provide a canonical (or well-understood) set of primitive operations such that a user or administrator can combine capabilities from different volume providers to achieve a desired final result.
A second problem is that the arbitrary combination of volume management constructs is quite large. Moreover, many combinations result in volumes that have either performance or reliability problems.
Therefore, there is a need in the art for a system that provides a volume stacking model that enables volume mappings to achieve fault tolerance, increased performance, and/or increased capacity while eliminating volume mappings that can potentially cause performance or reliability problems.
The above-mentioned shortcomings, disadvantages and problems are addressed by the present invention, which will be understood by reading and studying the following specification.
The systems and methods presented implement a hierarchy of stacking operations that create and maintain a stacked volume. One aspect of the system is that a logical volume manager comprises one or more components that define a stacking model having a plurality of levels. A configuration component controls the configuration of the underlying storage device. A striping component manages striping of volumes defined by the configuration component. A mapping component provides for concatenating volumes defined by the configuration component or the striping component.
Another aspect of the system is that one or more optional plex components provide for plexing, or mirroring, volumes. A first plex component provides for mirroring volumes defined by the configuration component or the striping component. A second plex component provides for mirroring volumes defined by the mapping component. Thus, the second plex component allows for mirroring an entire volume set, while the first plex component provides for mirroring a component volume of a volume set.
Thus, the invention provides for advantages not found in prior systems. The hierarchy imposed reduces unnecessary combinatoric complexity. It also helps ensure robust interaction between logical volume providers and a file system or other data manager, and greatly simplifies dynamic volume resizing of volumes, that is, growing or shrinking a volume without system disruption.
The present invention describes systems, methods, and computer-readable media of varying scope. In addition to the aspects and advantages of the present invention described in this summary, further aspects and advantages of the invention will become apparent by reference to the drawings and by reading the detailed description that follows.